Model based programming and procedural programming are two different programming language models. To illustrate the differences between model based and procedural programming, consider the following statements:10X=220Y=X+530X=140 PRINT YIn a procedural programming language, printing Y on line 40 would result in a 7, since the value of Y was set at line 20. In a model based programming language, line 20 tells the system that Y is dependent on X, and should float with the value of X. Thus, after line 30, the value of Y will be 6, and 6 would be output at line 40.
Many conventional spreadsheet applications allow users to develop interdependent formulas in which variables (e.g., X and Y) are references to cells in a spreadsheet table. The formulas may be used to execute calculations according to the model based approach. This is very powerful, and one reason why spreadsheets are such indispensable tools. An entire model of interdependent formulas can be built up, and then changing one value can cause a ripple effect across all the expressions, without the programmer needing to explicitly re-execute all those expressions.
In the exemplary statements above, lines 10, 20, 30, 40 are executed in order, thereby injecting the procedural approach into the statements. Many conventional spreadsheet applications have no sense of an ordered procedural approach. To inject a procedural aspect into spreadsheet operations and/or to perform advanced tasks within a spreadsheet application, it is typically required to use a separate procedural programming language such as, for example, Visual Basic, in connection with the spreadsheet application. However, there are a number of drawbacks associated with this model. In particular, these programming languages are often too complex and/or unfamiliar to many spreadsheet users. Additionally, functions typically don't translate well between spreadsheets and procedural programming languages, and there is a basic mismatch between the procedural approach and spreadsheet's model driven approach. Another drawback of this model is that conventional procedural programming languages may consume too many resources in a server environment. Conventional procedural programming languages typically also have security issues that make them undesirable for execution in a server environment. Thus, many conventional spreadsheet services do not even offer a procedural programming language to users.